<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>MiXiM: IInterfaceTable Class Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>


</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">MiXiM
   &#160;<span id="projectnumber">2.3</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('a00100.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#friends">Friends</a>  </div>
  <div class="headertitle">
<div class="title">IInterfaceTable Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="IInterfaceTable" -->
<p><code>#include &lt;<a class="el" href="a00386_source.html">IInterfaceTable.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for IInterfaceTable:</div>
<div class="dyncontent">
<div class="center"><img src="a00764.png" border="0" usemap="#IInterfaceTable_inherit__map" alt="Inheritance graph"/></div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>

<p><a href="a00765.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html#a1047517c24c981f2069367ca576a9c81">getFullPath</a> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual cModule *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html#a2f0c6da3baff7416b8914d8a393bff7f">getHostModule</a> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html#a7b54fe5e63bb7d4c76483b7fa27e506f">addInterface</a> (<a class="el" href="a00104.html">InterfaceEntry</a> *entry)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html#a229a92e5d530127efb262e8fe7acfdf9">deleteInterface</a> (<a class="el" href="a00104.html">InterfaceEntry</a> *entry)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html#a2b0ce46cd92da6f64fc363410dc71904">getNumInterfaces</a> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00104.html">InterfaceEntry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html#a19ce4ca3b47b52b8e2b67c25806c4b49">getInterface</a> (int pos)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00104.html">InterfaceEntry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html#a92764d620c345b7261de20e9ee5247d7">getInterfaceById</a> (int id)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00104.html">InterfaceEntry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html#a31ab0c95a4bf741f1f8aa03e1cf76986">getInterfaceByNodeOutputGateId</a> (int id)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00104.html">InterfaceEntry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html#a60257f3b30cedc18a80835d5be8305d9">getInterfaceByNodeInputGateId</a> (int id)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00104.html">InterfaceEntry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html#a8d10b748bc5429c706fab120c719e335">getInterfaceByNetworkLayerGateIndex</a> (int index)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00104.html">InterfaceEntry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html#a54ae8859390945b1d565e6732f27f848">getInterfaceByInterfaceModule</a> (cModule *ifmod)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00104.html">InterfaceEntry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html#a8ad86ee823d6200b4f558383b39af658">getInterfaceByName</a> (const char *name)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00104.html">InterfaceEntry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html#ad9b040947200941201b8c82d35c7abee">getFirstLoopbackInterface</a> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00104.html">InterfaceEntry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html#a5d953f7e65da1885c6c85d0dfa890874">getFirstMulticastInterface</a> ()=0</td></tr>
<tr><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8ce8de50598e7ac988f4dc3a2ed976f"></a><!-- doxytag: member="IInterfaceTable::interfaceChanged" ref="ad8ce8de50598e7ac988f4dc3a2ed976f" args="(InterfaceEntry *entry, int category)=0" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>interfaceChanged</b> (<a class="el" href="a00104.html">InterfaceEntry</a> *entry, int category)=0</td></tr>
<tr><td colspan="2"><h2><a name="friends"></a>
Friends</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a927bba568218c52cc2ec3574098d91c2"></a><!-- doxytag: member="IInterfaceTable::InterfaceEntry" ref="a927bba568218c52cc2ec3574098d91c2" args="" -->
class&#160;</td><td class="memItemRight" valign="bottom"><b>InterfaceEntry</b></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>A C++ interface to abstract the functionality of <a class="el" href="a00106.html">InterfaceTable</a>. Referring to <a class="el" href="a00106.html">InterfaceTable</a> via this interface makes it possible to transparently replace <a class="el" href="a00106.html">InterfaceTable</a> with a different implementation, without any change to the base INET.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00106.html">InterfaceTable</a>, <a class="el" href="a00104.html">InterfaceEntry</a> </dd></dl>
</div><hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a7b54fe5e63bb7d4c76483b7fa27e506f"></a><!-- doxytag: member="IInterfaceTable::addInterface" ref="a7b54fe5e63bb7d4c76483b7fa27e506f" args="(InterfaceEntry *entry)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void IInterfaceTable::addInterface </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00104.html">InterfaceEntry</a> *&#160;</td>
          <td class="paramname"><em>entry</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Adds an interface. The entry-&gt;getInterfaceModule() will be used to discover and fill in getNetworkLayerGateIndex(), getNodeOutputGateId(), and getNodeInputGateId() in <a class="el" href="a00104.html">InterfaceEntry</a>. It should be NULL if this is a virtual interface (e.g. loopback). </p>

<p>Implemented in <a class="el" href="a00106.html#af43ca2b4f54392ce974effc35dcf72d1">InterfaceTable</a>.</p>

<p>Referenced by <a class="el" href="a00026.html#adc87295362ca7859cb6fe2a5bbe3c90d">BaseMacLayer::registerInterface()</a>.</p>

</div>
</div>
<a class="anchor" id="a229a92e5d530127efb262e8fe7acfdf9"></a><!-- doxytag: member="IInterfaceTable::deleteInterface" ref="a229a92e5d530127efb262e8fe7acfdf9" args="(InterfaceEntry *entry)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void IInterfaceTable::deleteInterface </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00104.html">InterfaceEntry</a> *&#160;</td>
          <td class="paramname"><em>entry</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Deletes the given interface from the table. Indices of existing interfaces (see <a class="el" href="a00100.html#a19ce4ca3b47b52b8e2b67c25806c4b49">getInterface(int)</a>) may change. It is an error if the given interface is not in the table. </p>

<p>Implemented in <a class="el" href="a00106.html#a59bf4ac426a9fd86c5ce4cb2c9fcc16e">InterfaceTable</a>.</p>

</div>
</div>
<a class="anchor" id="ad9b040947200941201b8c82d35c7abee"></a><!-- doxytag: member="IInterfaceTable::getFirstLoopbackInterface" ref="ad9b040947200941201b8c82d35c7abee" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="a00104.html">InterfaceEntry</a>* IInterfaceTable::getFirstLoopbackInterface </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the first interface with the isLoopback flag set. (If there's no loopback, it returns NULL -- but this should never happen because <a class="el" href="a00106.html">InterfaceTable</a> itself registers a loopback interface on startup.) </p>

<p>Implemented in <a class="el" href="a00106.html#a60849d96d27149120445ee5429462d91">InterfaceTable</a>.</p>

</div>
</div>
<a class="anchor" id="a5d953f7e65da1885c6c85d0dfa890874"></a><!-- doxytag: member="IInterfaceTable::getFirstMulticastInterface" ref="a5d953f7e65da1885c6c85d0dfa890874" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="a00104.html">InterfaceEntry</a>* IInterfaceTable::getFirstMulticastInterface </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the first multicast capable interface. If there is no such interface, then returns NULL. </p>

<p>Implemented in <a class="el" href="a00106.html#a14c696f299054ee4617612e3c7e721b9">InterfaceTable</a>.</p>

</div>
</div>
<a class="anchor" id="a1047517c24c981f2069367ca576a9c81"></a><!-- doxytag: member="IInterfaceTable::getFullPath" ref="a1047517c24c981f2069367ca576a9c81" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual std::string IInterfaceTable::getFullPath </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Module path name </p>

<p>Implemented in <a class="el" href="a00106.html#abde330e4adcc5a7495f89b8cd6154275">InterfaceTable</a>.</p>

</div>
</div>
<a class="anchor" id="a2f0c6da3baff7416b8914d8a393bff7f"></a><!-- doxytag: member="IInterfaceTable::getHostModule" ref="a2f0c6da3baff7416b8914d8a393bff7f" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual cModule* IInterfaceTable::getHostModule </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the host or router this interface table lives in. </p>

<p>Implemented in <a class="el" href="a00106.html#a999f85862dc558747ce9d8e2393188bb">InterfaceTable</a>.</p>

</div>
</div>
<a class="anchor" id="a19ce4ca3b47b52b8e2b67c25806c4b49"></a><!-- doxytag: member="IInterfaceTable::getInterface" ref="a19ce4ca3b47b52b8e2b67c25806c4b49" args="(int pos)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="a00104.html">InterfaceEntry</a>* IInterfaceTable::getInterface </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>pos</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the <a class="el" href="a00104.html">InterfaceEntry</a> specified by an index 0..numInterfaces-1. Throws an error if index is out of range.</p>
<p>Note that this index is NOT the same as interfaceId! Indices are not guaranteed to stay the same after interface addition/deletion, so cannot be used to reliably identify the interface. Use interfaceId to refer to interfaces from other modules or from messages/packets. </p>

<p>Implemented in <a class="el" href="a00106.html#a20068628e72377ed78735e6b008a0a9f">InterfaceTable</a>.</p>

</div>
</div>
<a class="anchor" id="a92764d620c345b7261de20e9ee5247d7"></a><!-- doxytag: member="IInterfaceTable::getInterfaceById" ref="a92764d620c345b7261de20e9ee5247d7" args="(int id)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="a00104.html">InterfaceEntry</a>* IInterfaceTable::getInterfaceById </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>id</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns an interface by its Id. Ids are guaranteed to be invariant to interface deletions/additions. Returns NULL if there is no such interface (This allows detecting stale IDs without raising an error.) </p>

<p>Implemented in <a class="el" href="a00106.html#a3acb58a75de2e7d443c6abd0e7bd2548">InterfaceTable</a>.</p>

</div>
</div>
<a class="anchor" id="a54ae8859390945b1d565e6732f27f848"></a><!-- doxytag: member="IInterfaceTable::getInterfaceByInterfaceModule" ref="a54ae8859390945b1d565e6732f27f848" args="(cModule *ifmod)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="a00104.html">InterfaceEntry</a>* IInterfaceTable::getInterfaceByInterfaceModule </td>
          <td>(</td>
          <td class="paramtype">cModule *&#160;</td>
          <td class="paramname"><em>ifmod</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns an interface by one of its component module (e.g. PPP). Returns NULL if not found. </p>

<p>Implemented in <a class="el" href="a00106.html#a109c3bcfee676b91628bef4582839f50">InterfaceTable</a>.</p>

</div>
</div>
<a class="anchor" id="a8ad86ee823d6200b4f558383b39af658"></a><!-- doxytag: member="IInterfaceTable::getInterfaceByName" ref="a8ad86ee823d6200b4f558383b39af658" args="(const char *name)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="a00104.html">InterfaceEntry</a>* IInterfaceTable::getInterfaceByName </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns an interface given by its name. Returns NULL if not found. </p>

<p>Implemented in <a class="el" href="a00106.html#a3f953c2e608d84f14cfcaaf32ff6cbe1">InterfaceTable</a>.</p>

</div>
</div>
<a class="anchor" id="a8d10b748bc5429c706fab120c719e335"></a><!-- doxytag: member="IInterfaceTable::getInterfaceByNetworkLayerGateIndex" ref="a8d10b748bc5429c706fab120c719e335" args="(int index)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="a00104.html">InterfaceEntry</a>* IInterfaceTable::getInterfaceByNetworkLayerGateIndex </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns an interface given by its getNetworkLayerGateIndex(). Returns NULL if not found. </p>

<p>Implemented in <a class="el" href="a00106.html#abc0aa1cd6740d6808c09c3969969bd6f">InterfaceTable</a>.</p>

</div>
</div>
<a class="anchor" id="a60257f3b30cedc18a80835d5be8305d9"></a><!-- doxytag: member="IInterfaceTable::getInterfaceByNodeInputGateId" ref="a60257f3b30cedc18a80835d5be8305d9" args="(int id)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="a00104.html">InterfaceEntry</a>* IInterfaceTable::getInterfaceByNodeInputGateId </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>id</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns an interface given by its getNodeInputGateId(). Returns NULL if not found. </p>

<p>Implemented in <a class="el" href="a00106.html#ad6eb1529b3d8ed007feea079e1f5d9cd">InterfaceTable</a>.</p>

</div>
</div>
<a class="anchor" id="a31ab0c95a4bf741f1f8aa03e1cf76986"></a><!-- doxytag: member="IInterfaceTable::getInterfaceByNodeOutputGateId" ref="a31ab0c95a4bf741f1f8aa03e1cf76986" args="(int id)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="a00104.html">InterfaceEntry</a>* IInterfaceTable::getInterfaceByNodeOutputGateId </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>id</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns an interface given by its getNodeOutputGateId(). Returns NULL if not found. </p>

<p>Implemented in <a class="el" href="a00106.html#a281b09bc65fc43109563bff6d9e55995">InterfaceTable</a>.</p>

</div>
</div>
<a class="anchor" id="a2b0ce46cd92da6f64fc363410dc71904"></a><!-- doxytag: member="IInterfaceTable::getNumInterfaces" ref="a2b0ce46cd92da6f64fc363410dc71904" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int IInterfaceTable::getNumInterfaces </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the number of interfaces. </p>

<p>Implemented in <a class="el" href="a00106.html#aa7bbc08564b199d7820f9fb5dafedead">InterfaceTable</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>D:/Projects/MiXiM/extsrc/mixim/src/inet_stub/networklayer/common/<a class="el" href="a00386_source.html">IInterfaceTable.h</a></li>
</ul>
</div>
</div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="a00100.html">IInterfaceTable</a>      </li>

    <li class="footer">Generated on Tue Mar 5 2013 21:26:32 for MiXiM by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.5.1 </li>
   </ul>
 </div>


</body>
</html>
